//package com.lgCore.util;
//
//import com.alibaba.fastjson.JSON;
//import com.esotericsoftware.kryo.Kryo;
//import com.esotericsoftware.kryo.io.Input;
//import com.esotericsoftware.kryo.io.Output;
//import com.esotericsoftware.kryo.serializers.CollectionSerializer;
//import com.esotericsoftware.kryo.serializers.JavaSerializer;
//import com.lgCore.util.model.HeadType;
//import com.lgCore.util.model.Message;
//import com.lgCore.util.model.RpcRequest;
//import org.apache.commons.codec.binary.Base64;
//
//import java.io.ByteArrayInputStream;
//import java.io.ByteArrayOutputStream;
//import java.io.IOException;
//import java.io.Serializable;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
//public class KyroTest {
//
//    public static void main(String[] args) {
//
//        //rpc请求
//        RpcRequest rpcRequest=new RpcRequest();
//        rpcRequest.setClientId("唯一客户id");
//        rpcRequest.setServiceName("appService");
//        rpcRequest.setMethodName("test");
//        Object[] objects = new Object[2];
//        objects[0]="11111";
//        objects[1]=23;
//        rpcRequest.setRequestObjects(JSON.toJSONString(objects));
//        rpcRequest.setType(HeadType.RPC_REQUEST);
//        Message message = new Message();
//        message.setRpcRequest(rpcRequest);
//
//        // 将数据写到输出流
//        Date date = new Date();
//        int num=100000;
//        ByteArrayOutputStream output = new ByteArrayOutputStream();
//        byte[] byteArray =null;
//        for(int i=0;i<num;i++){
//           byteArray = serializationObject(message);
//        }
////        System.out.println(new Date().getTime()-date.getTime());
//        System.out.println(byteArray.length);
//
//
//
//       /* List<Person> list = new ArrayList<Person>();
//        Person p  = new Person();
//        for(int i=0;i<=10000;i++){
//            p = new Person();
//            p.setId(i);
//            list.add(p);
//        }
//
//        long begin = System.currentTimeMillis();
//        String listStr = serializationList(list,Person.class);
//        System.out.println(System.currentTimeMillis()-begin);
//        System.out.println(listStr.length());
//        begin = System.currentTimeMillis();
//        List<Person> list2 = deserializationList(listStr,Person.class);
//        System.out.println(System.currentTimeMillis()-begin);
//        System.out.println(JSON.toJSONString(list2));
//        begin = System.currentTimeMillis();
//        byte[] bytes = serializationObject(p);
//        Person person =  deserializationObject(bytes,Person.class);
//        System.out.println(System.currentTimeMillis()-begin);
//        System.out.println(JSON.toJSONString(person));
//        System.out.println(System.currentTimeMillis()-begin);*/
//    }
//    private static <T extends Serializable> String serializationList(List<T> obj, Class<T> clazz) {
//        Kryo kryo = new Kryo();
//        kryo.setReferences(false);
//        kryo.setRegistrationRequired(true);
//
//        CollectionSerializer serializer = new CollectionSerializer();
//        serializer.setElementClass(clazz, new JavaSerializer());
//        serializer.setElementsCanBeNull(false);
//
//        kryo.register(clazz, new JavaSerializer());
//        kryo.register(ArrayList.class, serializer);
//
//        ByteArrayOutputStream baos = new ByteArrayOutputStream();
//        Output output = new Output(baos);
//        kryo.writeObject(output, obj);
//        output.flush();
//        output.close();
//
//        byte[] b = baos.toByteArray();
//        try {
//            baos.flush();
//            baos.close();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return new String(new Base64().encode(b));
//    }
//
//    private static <T extends Serializable> List<T> deserializationList(String obj, Class<T> clazz) {
//        Kryo kryo = new Kryo();
//        kryo.setReferences(false);
//        kryo.setRegistrationRequired(true);
//
//        CollectionSerializer serializer = new CollectionSerializer();
//        serializer.setElementClass(clazz, new JavaSerializer());
//        serializer.setElementsCanBeNull(false);
//
//        kryo.register(clazz, new JavaSerializer());
//        kryo.register(ArrayList.class, serializer);
//
//        ByteArrayInputStream bais = new ByteArrayInputStream(new Base64().decode(obj.getBytes()));
//        Input input = new Input(bais);
//        return (List<T>) kryo.readObject(input, ArrayList.class, serializer);
//    }
//
//    /**
//     * 序列化对象
//     *
//     * @param obj
//     * @return
//     */
//    private static <T extends Serializable> byte[] serializationObject(T obj) {
//        Kryo kryo = new Kryo();
//        kryo.setReferences(false);
//        kryo.register(obj.getClass(), new JavaSerializer());
//        ByteArrayOutputStream baos = new ByteArrayOutputStream();
//        Output output = new Output(baos);
//        kryo.writeClassAndObject(output, obj);
//        output.flush();
//        output.close();
//        byte[] b = baos.toByteArray();
//        try {
//            baos.flush();
//            baos.close();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
////        return new String(new Base64().encode(b));
//        return b;
//    }
//
//    /**
//     * 反序列化
//     *
//     * @param obj
//     * @param clazz
//     * @return
//     */
//    private static <T extends Serializable> T deserializationObject(byte[] obj, Class<T> clazz) {
//        Kryo kryo = new Kryo();
//        kryo.setReferences(false);
//        kryo.register(clazz, new JavaSerializer());
//
//        ByteArrayInputStream bais = new ByteArrayInputStream(obj);
//        Input input = new Input(bais);
//        return (T) kryo.readClassAndObject(input);
//    }
//}
//class Person implements Serializable{
//
//    private static final long serialVersionUID = 1L;
//    private int id ;
//
//    public int getId() {
//        return id;
//    }
//
//    public void setId(int id) {
//        this.id = id;
//    }
//
//}